/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controleur;

import DAO.DAOException;
import DAO.DAOFactory;
import DAO.IncidentDAOmysql;
import DAO.IncidentDao;
import DAO.TypeIncidentDAOmysql;
import DAO.TypeIncidentDao;
import Modele.Incident;
import Modele.Technicien;
import Modele.Utilisateur;
import Utils.Constantes;
import Vue.IncidentForm;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;
import nemovelo.NemoVelo;

/**
 *
 * @author 20cent
 */
public class IncidentFormControleur {

    private IncidentForm vue;
    private Incident incident;
    private IncidentDao dao;
    private int typeinc_id;
    private int technicien_id;

    public IncidentFormControleur(IncidentForm vue) {
        this.vue = vue;
        dao = new IncidentDAOmysql(DAOFactory.getInstance());
    }

    public void modifier(Incident modIncident) {
        incident = modIncident;
        typeinc_id = incident.getmTypInc().getMId();
        if (incident.getmTechnicien() != null) {
            technicien_id = incident.getmTechnicien().getMId();


            java.awt.EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                    try {
                        //si le statut du ticket est "clos" on définit la date de fermeture
                        if (incident.getMStatut().equals(Constantes.STATUT_CLOS)) {
                            incident.setMDateFermeture(new Date());
                        }

                        dao.update(incident, typeinc_id, technicien_id);
                        JOptionPane.showMessageDialog(vue, "Modification réalisée avec succès");
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(vue,
                                "Une erreur s'est produite à la modification !", "Erreur", JOptionPane.WARNING_MESSAGE);
                    }
                    incident.notifierObserveurs(incident.getClass().getSimpleName());
                    vue.dispose();
                }
            });
        } else {
            JOptionPane.showMessageDialog(vue,
                                "Vous devez assigner l'incident à un technicien.");
        }
    }
}
